package com.ssy.lingxi.report.service;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.report.api.vo.request.AddOrderVO;
import com.ssy.lingxi.report.model.vo.response.OrderStatisticsVO;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 订单报表接口定义
 * @author 伍将
 * @date 2020/11/10
 * @version 2.0.0
 */
public interface IOrderReportService {

    /**
     * 订单日报表
     * @author 伍将
     * @date 2020/11/9
     * @param startTime: 开始时间
     * @param endTime: 结束时间
     **/
    void orderDayReport(LocalDateTime startTime, LocalDateTime endTime);

    /**
     * 订单月报表
     * @author 伍将
     * @date 2020/11/9
     * @param startTime: 开始时间
     * @param endTime: 结束时间
     **/
    void orderMonthReport(LocalDateTime startTime, LocalDateTime endTime);

    /**
     * 获取订单数据
     * @author 伍将
     * @date 2020/11/10
     * @param user: 当前登录用户
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.report.model.vo.response.OrderStatisticsVO>
     **/
    Wrapper<OrderStatisticsVO> getOrderList(UserLoginCacheDTO user);

    /**
     * 获取订单数据
     * @author 伍将
     * @date 2020/11/10
     * @param user: 当前登录用户
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.report.model.vo.response.OrderStatisticsVO>
     **/
    Wrapper<OrderStatisticsVO> getOrderListByMember(UserLoginCacheDTO user);

    /**
     * 新增订单
     * @author 伍将
     * @date 2021/1/14
     * @param addOrderVO : 请求参数
     **/
    void addOrder(AddOrderVO addOrderVO);

    /**
     * 批量新增订单
     * @author 伍将
     * @date 2021/2/4
     * @param addOrderVO : 请求参数
     **/
    void addOrderList(List<AddOrderVO> addOrderVO);

}
